package RRHH_Modelo;

import Conexion.Conexion;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Date;

public class RHH_PLANILLA_AGUINALDO {

    private double MONTO;
    private int CANTIDAD_PAGOS;
    private int ID_AGUINALDO_CABECERA;
    private int ID;
    private int ID_USUARIO;
    private int ANTIGUEDAD_DIA;
    private int ANTIGUEDAD_MES;
    private int ANTIGUEDAD_ANO;
    private Date FECHA_INGRESO;
    private Date FECHA_RETIRO;
    private int DEPARTAMENTO;
    private int REGIONAL;
    private int SUCURSAL;
    private int MESES_TRABAJADOS_ANO_ACTUAL;
    private int DIAS_TRABAJADOS_ANO_ACTUAL;
    private String CARGO;
    private double MONTO_TOTAL;
    private Conexion con = null;
    

    public RHH_PLANILLA_AGUINALDO(Conexion con) {
        this.con = con;
    }

    public RHH_PLANILLA_AGUINALDO(double MONTO, int CANTIDAD_PAGOS, int ID_AGUINALDO_CABECERA, int ID, int ID_USUARIO, int ANTIGUEDAD_DIA, int ANTIGUEDAD_MES, int ANTIGUEDAD_ANO, Date FECHA_INGRESO, Date FECHA_RETIRO, int DEPARTAMENTO, int REGIONAL, int SUCURSAL, int MESES_TRABAJADOS_ANO_ACTUAL, int DIAS_TRABAJADOS_ANO_ACTUAL, String CARGO, double MONTO_TOTAL) {
        this.MONTO = MONTO;
        this.CANTIDAD_PAGOS = CANTIDAD_PAGOS;
        this.ID_AGUINALDO_CABECERA = ID_AGUINALDO_CABECERA;
        this.ID = ID;
        this.ID_USUARIO = ID_USUARIO;
        this.ANTIGUEDAD_DIA = ANTIGUEDAD_DIA;
        this.ANTIGUEDAD_MES = ANTIGUEDAD_MES;
        this.ANTIGUEDAD_ANO = ANTIGUEDAD_ANO;
        this.FECHA_INGRESO = FECHA_INGRESO;
        this.FECHA_RETIRO = FECHA_RETIRO;
        this.DEPARTAMENTO = DEPARTAMENTO;
        this.REGIONAL = REGIONAL;
        this.SUCURSAL = SUCURSAL;
        this.MESES_TRABAJADOS_ANO_ACTUAL = MESES_TRABAJADOS_ANO_ACTUAL;
        this.DIAS_TRABAJADOS_ANO_ACTUAL = DIAS_TRABAJADOS_ANO_ACTUAL;
        this.CARGO = CARGO;
        this.MONTO_TOTAL = MONTO_TOTAL;
    }   

    public int Insertar() throws SQLException {
        String consulta = "insert into BROKER.RHH_PLANILLA_AGUINALDO (MONTO, CANTIDAD_PAGOS, ID_AGUINALDO_CABECERA, ID, ID_USUARIO, ANTIGUEDAD_DIA, ANTIGUEDAD_MES, ANTIGUEDAD_ANO, FECHA_INGRESO, FECHA_RETIRO, DEPARTAMENTO, REGIONAL, SUCURSAL, MESES_TRABAJADOS_ANO_ACTUAL, DIAS_TRABAJADOS_ANO_ACTUAL, CARGO, MONTO_TOTAL) VALUES (" + MONTO + "," + CANTIDAD_PAGOS + "," + ID_AGUINALDO_CABECERA + "," + ID + "," + ID_USUARIO + "," + ANTIGUEDAD_DIA + "," + ANTIGUEDAD_MES + "," + ANTIGUEDAD_ANO + "," + getFECHA_INGRESO_INSERT() + "," + getFECHA_RETIRO_INSERT() + ",'" + DEPARTAMENTO + "','" + REGIONAL + "','" + SUCURSAL + "'," + MESES_TRABAJADOS_ANO_ACTUAL + "," + DIAS_TRABAJADOS_ANO_ACTUAL + ",'" + CARGO + "'," + MONTO_TOTAL + ")";
        con.EjecutarSentencia(consulta);
        consulta = "select BROKER.RHH_PLANILLA_AGUINALDO_SEQ.currval as ID from dual";
        ResultSet rs = con.EjecutarConsulta(consulta);
        rs.next();
        return rs.getInt("ID");
    }

    public boolean Modificar() throws SQLException {
        String consulta = "update BROKER.RHH_PLANILLA_AGUINALDO set MONTO = " + MONTO + ",CANTIDAD_PAGOS = " + CANTIDAD_PAGOS + ",ID_AGUINALDO_CABECERA = " + ID_AGUINALDO_CABECERA + ",ID = " + ID + ",ID_USUARIO = " + ID_USUARIO + ",ANTIGUEDAD_DIA = " + ANTIGUEDAD_DIA + ",ANTIGUEDAD_MES = " + ANTIGUEDAD_MES + ",ANTIGUEDAD_ANO = " + ANTIGUEDAD_ANO + ",FECHA_INGRESO = " + getFECHA_INGRESO_INSERT() + ",FECHA_RETIRO = " + getFECHA_RETIRO_INSERT() + ",DEPARTAMENTO = '" + DEPARTAMENTO + "',REGIONAL = '" + REGIONAL + "',SUCURSAL = '" + SUCURSAL + "',MESES_TRABAJADOS_ANO_ACTUAL = " + MESES_TRABAJADOS_ANO_ACTUAL + ",DIAS_TRABAJADOS_ANO_ACTUAL = " + DIAS_TRABAJADOS_ANO_ACTUAL + ",CARGO = '" + CARGO + "',MONTO_TOTAL = " + MONTO_TOTAL + " where ID =  " + getID();
        con.EjecutarSentencia(consulta);
        return true;
    }

    public boolean EliminarXid() throws SQLException {
        String consulta = "delete from BROKER.RHH_PLANILLA_AGUINALDO where ID= " + getID();
        con.EjecutarSentencia(consulta);
        return true;
    }
    public boolean EliminarXcabecera(int id_cabecera) throws SQLException 
    {        
        String consulta = "delete from BROKER.RHH_PLANILLA_AGUINALDO where ID_AGUINALDO_CABECERA= " + id_cabecera;
        con.EjecutarSentencia(consulta);
        return true;
    }

    public List<RHH_PLANILLA_AGUINALDO> BuscarXmaestro(int id_cabecera) throws SQLException {
        String consulta = "select * from BROKER.RHH_PLANILLA_AGUINALDO where ID_AGUINALDO_CABECERA = " + id_cabecera;
        ResultSet rs = con.EjecutarConsulta(consulta);
        return Cargar(rs);
    }
   
    public RHH_PLANILLA_AGUINALDO Buscar(int id) throws SQLException {
        String consulta = "select * from BROKER.RHH_PLANILLA_AGUINALDO where ID= " + id;
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_PLANILLA_AGUINALDO> lista =Cargar(rs);
        if(lista.size()>0)
            return lista.get(0);
        else
            return null;
    }
   

    public List<RHH_PLANILLA_AGUINALDO> Todos() throws SQLException {
        String consulta = "select * from BROKER.RHH_PLANILLA_AGUINALDO";
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_PLANILLA_AGUINALDO> lista = Cargar(rs);
        return lista;
    }

    public List<RHH_PLANILLA_AGUINALDO> Cargar(ResultSet rs) throws SQLException {
        List<RHH_PLANILLA_AGUINALDO> lista = new ArrayList<RHH_PLANILLA_AGUINALDO>();
        while (rs.next()) {
            RHH_PLANILLA_AGUINALDO objeto = new RHH_PLANILLA_AGUINALDO(con);
            objeto.setMONTO(rs.getDouble("MONTO"));
            objeto.setCANTIDAD_PAGOS(rs.getInt("CANTIDAD_PAGOS"));
            objeto.setID_AGUINALDO_CABECERA(rs.getInt("ID_AGUINALDO_CABECERA"));
            objeto.setID(rs.getInt("ID"));
            objeto.setID_USUARIO(rs.getInt("ID_USUARIO"));
            objeto.setANTIGUEDAD_DIA(rs.getInt("ANTIGUEDAD_DIA"));
            objeto.setANTIGUEDAD_MES(rs.getInt("ANTIGUEDAD_MES"));
            objeto.setANTIGUEDAD_ANO(rs.getInt("ANTIGUEDAD_ANO"));
            objeto.setFECHA_INGRESO(rs.getDate("FECHA_INGRESO"));
            objeto.setFECHA_RETIRO(rs.getDate("FECHA_RETIRO"));
            objeto.setDEPARTAMENTO(rs.getInt("DEPARTAMENTO"));
            objeto.setREGIONAL(rs.getInt("REGIONAL"));
            objeto.setSUCURSAL(rs.getInt("SUCURSAL"));
            objeto.setMESES_TRABAJADOS_ANO_ACTUAL(rs.getInt("MESES_TRABAJADOS_ANO_ACTUAL"));
            objeto.setDIAS_TRABAJADOS_ANO_ACTUAL(rs.getInt("DIAS_TRABAJADOS_ANO_ACTUAL"));
            objeto.setCARGO(rs.getString("CARGO"));
            objeto.setMONTO_TOTAL(rs.getDouble("MONTO_TOTAL"));
            lista.add(objeto);
        }
        return lista;
    }

    public double getMONTO() {
        return MONTO;
    }

    public void setMONTO(double MONTO) {
        this.MONTO = MONTO;
    }

    public int getCANTIDAD_PAGOS() {
        return CANTIDAD_PAGOS;
    }

    public void setCANTIDAD_PAGOS(int CANTIDAD_PAGOS) {
        this.CANTIDAD_PAGOS = CANTIDAD_PAGOS;
    }

    public int getID_AGUINALDO_CABECERA() {
        return ID_AGUINALDO_CABECERA;
    }

    public void setID_AGUINALDO_CABECERA(int ID_AGUINALDO_CABECERA) {
        this.ID_AGUINALDO_CABECERA = ID_AGUINALDO_CABECERA;
    }

    public int getID() {
        return ID;
    }

    public void setID(int ID) {
        this.ID = ID;
    }

    public int getID_USUARIO() {
        return ID_USUARIO;
    }

    public void setID_USUARIO(int ID_USUARIO) {
        this.ID_USUARIO = ID_USUARIO;
    }

    public int getANTIGUEDAD_DIA() {
        return ANTIGUEDAD_DIA;
    }

    public void setANTIGUEDAD_DIA(int ANTIGUEDAD_DIA) {
        this.ANTIGUEDAD_DIA = ANTIGUEDAD_DIA;
    }

    public int getANTIGUEDAD_MES() {
        return ANTIGUEDAD_MES;
    }

    public void setANTIGUEDAD_MES(int ANTIGUEDAD_MES) {
        this.ANTIGUEDAD_MES = ANTIGUEDAD_MES;
    }

    public int getANTIGUEDAD_ANO() {
        return ANTIGUEDAD_ANO;
    }

    public void setANTIGUEDAD_ANO(int ANTIGUEDAD_ANO) {
        this.ANTIGUEDAD_ANO = ANTIGUEDAD_ANO;
    }

    public String getFECHA_INGRESO() {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        if (FECHA_INGRESO != null) {
            return sdf.format(FECHA_INGRESO);
        } else {
            return null;
        }
    }

    public String getFECHA_INGRESO_INSERT() {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        if (FECHA_INGRESO != null) {
            return "to_date('" + sdf.format(FECHA_INGRESO) + "','dd/MM/yyyy')";
        } else {
            return "null";
        }
    }

    public void setFECHA_INGRESO(Date FECHA_INGRESO) {
        this.FECHA_INGRESO = FECHA_INGRESO;
    }

    public String getFECHA_RETIRO() {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        if (FECHA_RETIRO != null) {
            return sdf.format(FECHA_RETIRO);
        } else {
            return null;
        }
    }

    public String getFECHA_RETIRO_INSERT() {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        if (FECHA_RETIRO != null) {
            return "to_date('" + sdf.format(FECHA_RETIRO) + "','dd/MM/yyyy')";
        } else {
            return "null";
        }
    }

    public void setFECHA_RETIRO(Date FECHA_RETIRO) {
        this.FECHA_RETIRO = FECHA_RETIRO;
    }

    public int getDEPARTAMENTO() {
        return DEPARTAMENTO;
    }

    public void setDEPARTAMENTO(int DEPARTAMENTO) {
        this.DEPARTAMENTO = DEPARTAMENTO;
    }

    public int getREGIONAL() {
        return REGIONAL;
    }

    public void setREGIONAL(int REGIONAL) {
        this.REGIONAL = REGIONAL;
    }

    public int getSUCURSAL() {
        return SUCURSAL;
    }

    public void setSUCURSAL(int SUCURSAL) {
        this.SUCURSAL = SUCURSAL;
    }

    public int getMESES_TRABAJADOS_ANO_ACTUAL() {
        return MESES_TRABAJADOS_ANO_ACTUAL;
    }

    public void setMESES_TRABAJADOS_ANO_ACTUAL(int MESES_TRABAJADOS_ANO_ACTUAL) {
        this.MESES_TRABAJADOS_ANO_ACTUAL = MESES_TRABAJADOS_ANO_ACTUAL;
    }

    public int getDIAS_TRABAJADOS_ANO_ACTUAL() {
        return DIAS_TRABAJADOS_ANO_ACTUAL;
    }

    public void setDIAS_TRABAJADOS_ANO_ACTUAL(int DIAS_TRABAJADOS_ANO_ACTUAL) {
        this.DIAS_TRABAJADOS_ANO_ACTUAL = DIAS_TRABAJADOS_ANO_ACTUAL;
    }

    public String getCARGO() {
        return CARGO;
    }

    public void setCARGO(String CARGO) {
        this.CARGO = CARGO;
    }

    public double getMONTO_TOTAL() {
        return MONTO_TOTAL;
    }

    public void setMONTO_TOTAL(double MONTO_TOTAL) {
        this.MONTO_TOTAL = MONTO_TOTAL;
    }

    public Conexion getCon() {
        return this.con;
    }

    public void setCon(Conexion con) {
        this.con = con;
    }
}
